home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / infoserv / www / cern / doc / www-talk.archive.Z / www-talk.archive / text0030.txt < prev    next >
Encoding:
Text File  |  1992-11-30  |  39.9 KB  |  1,106 lines

  1.  
  2.  
  3. > From: Mark Alexander Davis-Craig <mad@merit.edu>
  4.  
  5. > I was looking through the web and found information on servers and
  6. > clients.  I saw mention in the "History" section about wanting to
  7. > develop a good protocol for information exchange, but haven't seen a
  8. > paper specifically about the www protocol.  Is there one?  If not,
  9. > could you describe it in some detail?
  10.  
  11. You are right that the protocol documentation was not as good as it could
  12. have been. I have improved it. To save you browing through the web for it,
  13. I append to this message the information as plain text.
  14.  
  15. > I ask because we at the University of Michigan are evaluating www,
  16. > wais, and gopher for campus-wide information delivery.
  17. >
  18.  
  19. I have no need to tell you what our suggestion would be!  The W3 architecure
  20. will give you (almost) everything you can get from WAIS and Gopher rolled into one.
  21. The trick is that almost anything is representable by hypertext links and index searches. The  
  22. Gopher menus and plain text, for example, are both special cases of hypertext.  As it is more  
  23. work to do the job for hypertext in general, we do not yet have software to cover as many  
  24. platforms as Gopher, for example. However, when we do, the W3 system will be more flexible.   
  25. Running a W3 server on top of a WAIS or Gopher world in fact makes these worlds subsets of the W3  
  26. web. The reverse is not possible because the WAIS and Gopher information models are not flexible  
  27. enough
  28. to encompass the W3 model.
  29.  
  30. That said, if you want an indexer we can only recommend the wais code (or NeXT code) and we do  
  31. not yet supply (as Gopher does) an off-the shelf index server for either of those indexes yet. It  
  32. is easy to do, however, with our generic server code.
  33.  
  34. Please keep me informed of your thinking, whether you plan to go W3 or Gopher.  If we can help  
  35. you set up a demonstration system, then mail me.
  36.  
  37.  
  38. >Thanks in advance.
  39. >  -----------------------------------------------------------------
  40. >  Mark Davis-Craig, Merit/MichNet Technical Support Consultant
  41. >  mad@merit.edu        mad@merit.bitnet        (313)-936-2110
  42.  
  43.  
  44. Tim Berners-Lee                       timbl@info.cern.ch
  45. World Wide Web project                (NeXTMail is ok)    
  46. CERN                                  Tel: +41(22)767 3755
  47. 1211 Geneva 23, Switzerland           Fax: +41(22)767 7155
  48.  
  49. _________________________________ protocol notes follow ___________
  50.  
  51.  
  52.                                          The HTTP Protocol As Implemented In W3
  53.  
  54.  
  55.                           HTTP AS IMPLEMENTED IN WWW
  56.                                        
  57.  
  58.    This document defines the Hypertext Transfer protocol  (HTTP) as currently
  59.    implemented by the WorldWideWeb initaitive software. This is a subset of the
  60.    proposed full HTTP protocol.  No client profile information is transferred
  61.    with the query. Future HTTP protocols will be back-compatible with this
  62.    protocol.
  63.    
  64.  
  65.     The protocol  uses the normal internet-style telnet protocol style on a
  66.    TCP-IP link. The following describes how a client acquires a (hypertext)
  67.    document from an HTTP server, given an HTTP document address .
  68.    
  69.  
  70. Connection
  71.  
  72.    The client makes a TCP-IP connection to the host using the domain name or IP
  73.    number , and the port number  given in the address.
  74.    
  75.  
  76.     During development, the default HTTP TCP port number is 2784 -- this will
  77.    change when an official port number is allocated.
  78.    
  79.  
  80.     The server accepts the connection.
  81.    
  82.  
  83.     Note: HTTP currently runs over TCP, but could run over any
  84.    connection-oriented service.   The interpretation of the protocol below in
  85.    the case of a sequenced packet service (such as DECnet(TM) or ISO TP4) is
  86.    that that the request should be one TPDU, but the repose may be many.
  87.    
  88.  
  89. Request
  90.  
  91.    The client sends a document request consisting of a line of ASCII characters
  92.    terminated by a CR LF (carriage return, line feed) pair. A well-behaved
  93.    server will not require the carriage return character.
  94.    
  95.  
  96.     This request consists of the word "GET", a space, the document address ,
  97.    omitting the "http:, host and port parts when they are the coordinates just
  98.    used to make the connection. (If a gateway is being used, then a full
  99.    document address may be given specifying a different naming scheme).
  100.    
  101.  
  102.     The search functionality of the protocol lies in the ability of the
  103.    addressing syntax to describe a search on a named index .
  104.    
  105.  
  106.     A search should only be requested by a client when the index document
  107.    itself has been descibed as an index using the  ISINDEX tag .
  108.    
  109.  
  110. Response
  111.  
  112.    The response to a simple GET request is a message in hypertext mark-up
  113.    language ( HTML ). This is a byte stream of ASCII characters.
  114.    
  115.  
  116.     Lines shall be delimited by an optional carriage return followed by a
  117.    mandatory line feed chararcter. The client should not assume that the
  118.    carriage return will be present.  Lines may be of any length. Well-behaved
  119.    servers should retrict line length to 80 characters excluding the CR LF
  120.    pair.
  121.    
  122.  
  123.     The format of the message is HTML - that is, a trimmed SGML document. Note
  124.    that this format allows for menus and hit lists to be returned as hypertext.
  125.    It also allows for plain ASCII text to be returned following the  PLAINTEXT
  126.    tag .
  127.    
  128.  
  129.     The message is terminated by  the closing of the connection by the server.
  130.    
  131.  
  132.     Well-behaved clients will read the entire document as fast as possible. The
  133.    client shall not wait for user action (output paging for example) before
  134.    reading the whole of the document.  The server may impose a timeout of the
  135.    order of 15 seconds on inactivity.
  136.    
  137.  
  138.     Error responses are supplied in human readable text in HTML syntax. There
  139.    is no way to distinguish an error response from a satisfactory response
  140.    except for the content of the text.
  141.    
  142.  
  143. Disconnection
  144.  
  145.    The TCP-IP connection is broken by the server when the whole document has
  146.    been transferred.
  147.    
  148.  
  149.     The client may abort the transfer by breaking the connection before this,
  150.    in which case the server will not record any error condidtion.
  151.    
  152.  
  153.     Requests are idempotent .  The server need not store any information about
  154.    the request after disconnection.
  155.    
  156.  
  157.     _________________________________________________________________
  158.    
  159.  
  160.                                                                          Tim BL
  161.                                                                                
  162.  
  163.                                W3 NAMING SCHEMES
  164.                                        
  165.  
  166.    (See also: a discussion of design issues involved , BNF syntax , W3
  167.    background)
  168.    
  169.  
  170.     The format of a hypertext name consists of the name of the naming
  171.    sub-scheme to be used, then a name in a format particular to that subscheme,
  172.    then an optional anchor identifier within the document. For example, the
  173.    format is for all internet-based access methods:
  174.    
  175.  
  176.       scheme : // host.domain:port / path / path  # anchor
  177.    
  178.  
  179.     A suffix # anchor id allows one to refer to a particular anchor within a
  180.    document.
  181.    
  182.  
  183.     A suffix ? followed by words separated by + signs  allows one to seach an
  184.    index (see details ).
  185.    
  186.  
  187.     References from one document to another with a similar name may be
  188.    abbreviated to a relative name . This imposes certain restrictions on the
  189.    way that the "path" is represented.
  190.    
  191.  
  192.     A special format is used to represent a search on an index . See also: the
  193.    full BNF description , about escaping illegal characters .
  194.    
  195.  
  196. Examples
  197.  
  198.  
  199.          file://cernvax.cern.ch/usr/lib/WWW/defaut.html#123
  200.  
  201.    This is a fully qualified file name, referring to a document in the file
  202.    name space of the given internet node, and an imaginary anchor 123 within
  203.    it.
  204.    
  205.  
  206.  
  207.          #greg
  208.  
  209.    This refers to anchor "greg" in the same document as that in which the name
  210.    appears.
  211.    
  212.  
  213. Naming sub-schemes
  214.  
  215.    Different schemes usually use different protocols on the network. The format
  216.    of the address after the scheme name is a function of the particular scheme.
  217.    In practice, all internet-based schemes have a common format for the node
  218.    name and port.   Schemes currently defined are as follows, with links to
  219.    more details.
  220.    
  221.  
  222.   file                    Access is provided to files, using whatever means the
  223.                          browser and/or gateways have to reach files on obscure
  224.                          machines.
  225.                          
  226.  
  227.   news                    Access is provided to news articles, and newsgroups,
  228.                          normally using the NNTP protocol.
  229.                          
  230.  
  231.   http                    Access is provided to any other information using the
  232.                          HTTP search and retrieve protocol . The internal
  233.                          addressing of the information system is mapped onto a
  234.                          W3 path.
  235.                          
  236.  
  237.   telnet                  Access is provided by an interactive telnet session.
  238.                          This is provided ONLY as an interface to other
  239.                          existing online systems which cannot or have not been
  240.                          mapped onto the W3 space.
  241.                          
  242.  
  243.   gopher                  Access is provided using the "gopher" protocol. The
  244.                          gopher protocol is similar to HTTP but uses separate
  245.                          concepts of menus and text files rather than
  246.                          hypertext.
  247.                          
  248.  
  249.    Other schemes we foresee are wais and x500.  Systems (such as WAIS) which
  250.    are not currently accessed directly be W3 servers may be accessed though
  251.    gateways, in which case the document address is encoded within the http
  252.    address of the document in the gateway.  Browsers which do not have the
  253.    ability to use certain protocols may (in principle) be configured to
  254.    automaticaly use certain gateways for certain addressing schemes.
  255.    
  256.  
  257.     This will allow, for example, simple PC-based clients to follow links
  258.    through X500 name servers.
  259.    
  260.  
  261.                                 RELATIVE NAMING
  262.                                        
  263.  
  264.    The address of a hypertext document is normally given within the context of
  265.    another hypertext document. Where the addresses of the two documents are the
  266.    similar, this allows only the difference between the two names to be given,
  267.    saving space. An example is the address of the destination of a hypertext
  268.    link , which is specified relative to the source document address.
  269.    
  270.  
  271.     (A futher practical advantage is that a group of documents may be
  272.    transmitted without internal changes, or accessed using more than one
  273.    address.)
  274.    
  275.  
  276.     In the WWW address format , the rules for relative naming are:
  277.    
  278.  
  279.        If the "scheme" parts  are different, the whole absolute address must be
  280.           given. Other wise, the scheme is omitted, and:
  281.           
  282.  
  283.        If the "host" and/or "port" parts are the different, the host name and
  284.           all the rest of the address must be given. The host name may be given
  285.           using internet hostname conventions, ie domains may be omitted where
  286.           different. This is not very well defined:  one tends to assume that
  287.           if any dot is present, then the full domain name is being given, up
  288.           to the root (.) domain, while if there are no dots, the domain is the
  289.           same as that of the hostname part of the the base address.
  290.           
  291.  
  292.        If the access and host parts are the same, then the path may be given
  293.           with the unix convention, including the use of  ".." to mean indicate
  294.           deletion of a path element. Within the path:
  295.           
  296.  
  297.        If a leading slash is present, the path is absolute. Otherwise:
  298.           
  299.  
  300.        The last part of the path of the base address (e.g. the filename of the
  301.           current document) is removed, and the given relative address appended
  302.           in its place.
  303.           
  304.  
  305.        Within the result,  all occurences "xxx/.."  are recursively removed,
  306.           where xxx is one path element (directory).
  307.           
  308.  
  309.    The use of the slash "/" and double dot ".." in this case must be respected
  310.    by all servers. If necessary, this may mean converting their local
  311.    representations in order that these characters should not appear within path
  312.    elements (see "escaping").
  313.    
  314.  
  315.                           ADDRESS FOR AN INDEX SEARCH
  316.                                        
  317.  
  318.    If a given hypertext node is an index, or the server has an index associated
  319.    with it, then a search may be done on that index by suffixing the name of
  320.    the index with a list of keywords, after a question mark:
  321.    
  322.  
  323.  
  324.         address_of_index ? keywordlist
  325.  
  326.    The address of the index is a normal hypertext address. In the keuwordlist,
  327.    multiple keywords are separated by plus signs (+) .  (See BNF syntax
  328.    description .)  The resulting string still does not contain any spaces. It
  329.    may be considered to be the hypertext address of a document which is the
  330.    result of making the keyword search on the index. Normally, if the search
  331.    was successful, the document returned will contain anchors leading to other
  332.    documents which match the selection criteria.
  333.    
  334.  
  335.     The search method, and the logical and lexical functions, weights, etc
  336.    applied to the keywords will depend on the index address.  One actual index
  337.    may have several hypertext addresses,  which when searched on will behave in
  338.    different ways. For example, one may allow a search on author-given keywords
  339.    only, while another may be a full text search.  These things particular to
  340.    an index should be descibed in the hypertext page for the index node itself
  341.    (or in linked documents). For example, a server may allow specific boolean
  342.    search combinations may be represented by the words "and", "or" and "not".
  343.    
  344.  
  345. Example:
  346.  
  347.  
  348.                 http://cernvm/FIND/?sgml+cms
  349.  
  350.    indicates the result of perfoming a search for keywords "sgml" and "cms" on
  351.    the index http://cernvm/FIND/.
  352.    
  353.  
  354.                                 HTTP ADDRESSING
  355.                                        
  356.  
  357.    With an access code of http:,  a protocol introduced for  the WWW initiative
  358.    is used to acquire data from a server. This is the "Hypertext Transfer
  359.    protocol", HTTP , a simple search and retrieve (S and R) protocol.
  360.    
  361.  
  362.     The syntax of an http address is, with [] indicating optional parts (see
  363.    BNF description ),
  364.    
  365.  
  366.  
  367.         http : // hostname [ : port ] / path [ ? searchwords ]
  368.  
  369.    for example, the following are valid addresses:
  370.    
  371.  
  372.  
  373.         http://info.cern.ch/hypertext/WWW/TheProject.html
  374.  
  375.         http://crnvmc.cern.ch/FIND?sgml+examples
  376.  
  377.    HTTP addresses conform to the WWW conventions,  including the possibility of
  378.    using the search format . The significance of the items in the path part of
  379.    the document name is completely up to the server. Different paths may be
  380.    used to select different databases, different views of the same database,
  381.    etc.
  382.    
  383.  
  384.   hostname                This is the name of the server in internet form. A
  385.                          numeric form (e.g. 128.141.201.74) may be used, by the
  386.                          domain name form (e.g. info.cern.ch) is preferred. The
  387.                          hostname is mandatory.
  388.                          
  389.  
  390.   port                    This is a numeric port number. If a non-numeric
  391.                          string is used, it must be a defined service name.
  392.                          Note that as there is no central repository for
  393.                          service names (they are defined locaaly for each
  394.                          host), a service name is NOT an appropriate way to
  395.                          specify a port number for a hypertext address. If the
  396.                          port number is omitted the preceding colon must also
  397.                          be omitted. In this case, port number 2784 is assumed
  398.                          [This may change!].
  399.                          
  400.  
  401.   See also: WWW addressing in general , HTTP protocol .
  402.                          
  403.  
  404.    _________________________________________________________________
  405.    
  406.  
  407.                                                                          Tim BL
  408.                                                                                
  409.  
  410.                              W3 ADDRESSES OF FILES
  411.                                        
  412.  
  413.    The format of a hypertext reference to a file is an extension of the unix
  414.    naming system. The full explicit format is:
  415.    
  416.  
  417.        file :  //  node /  directories /  name
  418.    
  419.  
  420.     The actual protocols used by the client depend on the implementation of the
  421.    browser and the environment. Typically, the browser will check to see
  422.    whether the node is the local node,  or a node for which files are available
  423.    mounted in some form of distributed file system.  If neither of these are
  424.    the case, then the browser may try rpc, anonymous FTP or other protocols.
  425.    
  426.  
  427. Examples
  428.  
  429.  
  430.          file://cernvax.cern.ch/usr/lib/WWW/defaut.html
  431.  
  432.    This is a fully qualified file name.
  433.    
  434.  
  435.  
  436.          fred.html
  437.  
  438.    This relative name , used within a file, will refer to a file of the same
  439.    node and directory as that file, but the name fred.html.
  440.    
  441.  
  442. Improvements : Directory access
  443.  
  444.    The final file name should be optional. If the address ends with a '/', the
  445.    browser should retrieve the contents of the specified directory and generate
  446.    a page of virtual hypertext pointing to its contents. In addition, it could
  447.    display an information file contained in that directory, if any is present.
  448.    Suggested file names to search for in order : README.html, *README*.html,
  449.    README, *README*, *readme*.
  450.    
  451.  
  452.    
  453.  
  454.    
  455.  
  456.                         HYPERTEXT ADDRESS FOR NET NEWS
  457.                                        
  458.  
  459.    The format of a hypertext reference to information in the internet/usenet
  460.    news system can take any of the following forms:
  461.    
  462.  
  463.   news: newsgroup         This refers to a list of articles currently available
  464.                          in the given newsgroup. The newsgroup is a series of
  465.                          alphanumeric characters and dots.
  466.                          
  467.  
  468.   news:*                  This refers to a list of valid newsgroups.
  469.                          
  470.  
  471.   news: message_id        This refers to a given article explicitly. The
  472.                          message_id is optionally surrounded by angle brackets,
  473.                          and must contain an @ sign.
  474.                          
  475.  
  476.   
  477.  
  478.                          
  479.  
  480.    Possible extensions to this are more generous wildcarding for the list of
  481.    newsgroups. It takes too long to load the whole list, and it would be more
  482.    useful to be able to browse through a set of newsgroups.
  483.    
  484.  
  485.     There is no way of referring to "unread" articles. Keeping track of this is
  486.    the job of the browser.
  487.    
  488.  
  489. Examples
  490.  
  491.  
  492.          news:<12345678@cernvax.cern.ch>
  493.  
  494.          news:12345678@cernvax.cern.ch
  495.  
  496.    These addresses both refer to the same (imaginary!) article by its unique
  497.    message-id.
  498.    
  499.  
  500.  
  501.  
  502. news:comp.sys.next.announce
  503.  
  504.    This refers to a list of articles in the newsgroup comp.sys.next.announce.
  505.    The list is, of course, a list of references to article by message-id.
  506.    
  507.  
  508.                                TELNET ADDRESSING
  509.                                        
  510.  
  511.    A telnet address is a spcecial case of a W3 address.
  512.    
  513.  
  514.     When a telnet address is used, information can only be rertrieved using an
  515.    interactive telnet session. This has the disadvantage that information
  516.    cannot be indexed, searched, etc automatically, nor can it be gatewayed into
  517.    other systems.  The telnet addressing form is used to allow a pointer to
  518.    information systems such as library information systems which have not been
  519.    gatewayed into the web properly yet.
  520.    
  521.  
  522.     The syntax is, with [] indicating optional parts (see full BNF)
  523.    
  524.  
  525.  
  526.         telnet : / /  [ user @ ] host  [ : port ]
  527.  
  528.    There should be no spaces. For example, the following are valid telnet
  529.    addresses:
  530.    
  531.  
  532.  
  533.         telnet://www@info.cern.ch:23
  534.  
  535.         telnet://www@info.cern.ch
  536.  
  537.         telnet://info.cern.ch
  538.  
  539.   user                   is the optional name of the user to be used for login.
  540.                          If the username  is omitted, then so must be the "@"
  541.                          sign. This is equivalent to the argument used with the
  542.                          -l option on the ucb telnet command. When the username
  543.                          is omitted, some access servers will prompt for a
  544.                          username and password.
  545.                          
  546.  
  547.   host                   This is the name of the server in internet form. A
  548.                          numeric form (e.g. 128.141.201.74) may be used, by the
  549.                          domain name form (e.g.  info.cern.ch) is preferred.
  550.                          The host is mandatory.
  551.                          
  552.  
  553.   port                   This is a numeric port number. If a non-numeric string
  554.                          is used, it must be a defined service name. Note that
  555.                          as there is no central repository for service names
  556.                          (they are defined locaaly for each host),  a service
  557.                          name is NOT an appropriate way to specify a port
  558.                          number for a hypertext address. If the port number is
  559.                          omitted the preceding colon must also be omitted. In
  560.                          this case, port number 23 is assumed.
  561.                          
  562.  
  563.    _________________________________________________________________
  564.    
  565.  
  566.                                                                          Tim BL
  567.                                                                                
  568.  
  569.                                GOPHER ADDRESSING
  570.                                        
  571.  
  572.    Gopher addresses indicate that the gopher protocol should be used to access
  573.    the information.  The Gopher protocol is a simple internet protocol similar
  574.    to HTTP . It allows the transfer of menus or plain text files.  (HTTP
  575.    expresses both menus and plain text files as special cases of hypertext
  576.    files). See the gopher protocol notes .
  577.    
  578.  
  579.     The syntax is, with [] indicating optional parts (see BNF )
  580.    
  581.  
  582.  
  583.         gopher:// hostname [: port ] [/gtype/ [selector] ] [ ? search ]
  584.  
  585.    There should be no spaces. For example, the following are valid addresses:
  586.    
  587.  
  588.  
  589.         gopher://gopher.micro.umn.edu:70
  590.  
  591.         gopher://gopher.micro.umn.edu:70/1/
  592.  
  593.         gopher://gopher.micro.umn.edu:70
  594.  
  595.    The W3 address for a gopher item may be derived from the fields of a gopher
  596.    menu line which has the format
  597.    
  598.  
  599.   host                    This is the name of the server in internet form. A
  600.                          numeric form (e.g. 128.141.201.74) may be used, by the
  601.                          domain name form (e.g. info.cern.ch) is preferred. The
  602.                          hostname is mandatory.
  603.                          
  604.  
  605.   port                    This is a numeric port number. If a non-numeric
  606.                          string is used, it must be a defined service name.
  607.                          Note that as there is no central repository for
  608.                          service names (they are defined locaaly for each
  609.                          host), a service name is NOT an appropriate way to
  610.                          specify a port number for a hypertext address. If the
  611.                          port number is omitted the preceding colon must also
  612.                          be omitted. In this case, port number 70 is assumed.
  613.                          
  614.  
  615.   gtype                   This is a gopher item type number, a (hopefully
  616.                          printable!) ASCII character.  Currently these types
  617.                          are all ASCII decimal digit characters. Character "0"
  618.                          (hex 30)  signifies a plain text file. Character "1"
  619.                          signifies a Menu.  Character "7" signifies a
  620.                          searchable index.  Character "8" should not be used in
  621.                          a W3 address: use telnet addressing instead.  In
  622.                          general W3 terms, the type is the first part of the
  623.                          path. The rest of the path is the gopher selector
  624.                          string. The type field is a hint to the client as to
  625.                          how to represent the anchor, and how to follow it.
  626.                          
  627.  
  628.   selector                This is the string to be sent to the gopher server to
  629.                          identify the information required.
  630.                          
  631.  
  632.    _________________________________________________________________
  633.    
  634.  
  635.                                                                          Tim BL
  636.                                                                                
  637.  
  638.                           ESCAPING ILLEGAL CHARACTERS
  639.                                        
  640.  
  641.    The W3 address syntax allows a path to contain most printable ASCII
  642.    characters, but some are inevitably used for punctuation are excluded. W3
  643.    addresses are sometimes used to represent addresses in some other space.
  644.    This happens when an HTTP server, for example, uses file names as its
  645.    document names, or when addresses from some other protocol (Gopher, WAIS,
  646.    etc) are mapped into the W3 web.
  647.    
  648.  
  649.     In these cases, a convention is normally used to map illegal characters in
  650.    these "foreign" names onto the allowed set.
  651.    
  652.  
  653.     In the case of an HTTP server,  any mapping may be used.
  654.    
  655.  
  656.     A suitable convention is that a percent sign (%) followed by two
  657.    hexadecimal digits (0-9 or a-f)  stands for the single character with ASCII
  658.    hexadecimal code represented by those two digits (Most significant digit
  659.    first).
  660.    
  661.  
  662.     A percent sign itself must therefore be represented by %25, as 25 hex is
  663.    the ASCII code for "%".
  664.    
  665.  
  666.     _________________________________________________________________
  667.    
  668.  
  669.                                                                          Tim BL
  670.                                                                                
  671.  
  672.                             W3 ADDRESS SYNTAX: BNF
  673.                                        
  674.  
  675.    This is a BNF-like description of the W3 addressing syntax . We use a
  676.    vertical line "|" to indicate alternatives, and [brackets] to indicate
  677.    optional parts.   Spaces are representational only: no spaces are actually
  678.    allowed within a W3 address. Single letters stand for single letters. All
  679.    words of more than one letter below are entites described elsewhere in the
  680.    syntax description.  (Entity names are here linked to their definitions,
  681.    probably making this unreadable with the line mode browser.)
  682.    
  683.  
  684.     An absolute address specified in a link is an anchoraddress . The address
  685.    which is passed to a server is a docaddress .
  686.    
  687.  
  688.   anchoraddress           docaddress [ # anchor ]
  689.                          
  690.  
  691.   docaddress              httpaddress | fileaddress | newsaddress |
  692.                          telnetaddress | gopheraddress
  693.                          
  694.  
  695.   httpaddress             h t t p :   / / hostport  [  / path ] [ ? search ]
  696.                          
  697.  
  698.   fileaddress             f i l e : / / host / path
  699.                          
  700.  
  701.   newsaddress            n e w s : groupart
  702.                          
  703.  
  704.   groupart               * | group | article
  705.                          
  706.  
  707.   group                  ialpha [ . group ]
  708.                          
  709.  
  710.   article                xalphas @ host
  711.                          
  712.  
  713.   telnetaddress           t e l n e t : / / [ user @ ] hostport
  714.                          
  715.  
  716.   gopheraddress           g o p h e r : / / hostport  [/ gtype  [ / selector ]
  717.                          ] [ ? search ]
  718.                          
  719.  
  720.   hostport                host [ : port ]
  721.                          
  722.  
  723.   host                    hostname | hostnumber
  724.                          
  725.  
  726.   hostname                ialpha [  .  hostname ]
  727.                          
  728.  
  729.   hostnumber              digits . digits . digits . digits
  730.                          
  731.  
  732.   port                    digits
  733.                          
  734.  
  735.   selector                path
  736.                          
  737.  
  738.   path                    void |  xalphas  [  / path ]
  739.                          
  740.  
  741.   search                  xalphas [ + search ]
  742.                          
  743.  
  744.   user                    xalphas
  745.                          
  746.  
  747.   anchor                  xalphas
  748.                          
  749.  
  750.   gtype                   xalpha
  751.                          
  752.  
  753.   xalpha                  alpha | $ | _ | @ | ! | % | ^ | | * |  (  |  ) | . |
  754.                          digit
  755.                          
  756.  
  757.   xalphas                 xalpha [ xalphas ]
  758.                          
  759.  
  760.   ialpha                 alpha [ xalphas ]
  761.                          
  762.  
  763.   alpha                   a | b | c | d | e | f | g | h | i | j | k | l | m | n
  764.                          | o | p | q | r | s | t | u | v | w | x | y | z | A |
  765.                          B | C | D | E | F | G | H | I | J | K | L | M | N  | O
  766.                          | P | Q | R | S | T | U | V | W | X | Y | Z
  767.                          
  768.  
  769.   digit                   0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  770.                          
  771.  
  772.   digits                  digit [ digits ]
  773.                          
  774.  
  775.   alphanum                alpha | digit
  776.                          
  777.  
  778.   alphanums               alphanum [ alphanums ]
  779.                          
  780.  
  781.   void
  782.                          
  783.  
  784.   See also: General description of this syntax, Escaping conventions.
  785.                          
  786.  
  787.    _________________________________________________________________
  788.    
  789.  
  790.                                                                          Tim BL
  791.                                                                                
  792.  
  793.                                      HTML
  794.                                        
  795.  
  796.    The WWW system uses marked-up text to represent a hypertext document for
  797.    transmision over the network. The hypertext mark-up language is an SGML
  798.    format. This defines the basic syntax used. The particular language, the set
  799.    of tags and the rules about their use, and their significance is not part of
  800.    the SGML standard. There being no standard on this, we have adopted a set
  801.    which seems sensible. We call them HTML -- hypertext markup language. HTML
  802.    is not an alternative to SGML, it is a particular format within the SGML
  803.    rules (an SGML "DTD"). HTML parsers should ignore tags which they do not
  804.    understand, and ignore attributes which they do not understand of tags which
  805.    they do understand.
  806.    
  807.  
  808.     See also:
  809.    
  810.  
  811.   The tags                A list of the tags used in HTML with their
  812.                          significance.
  813.                          
  814.  
  815.   Example                 A file containing a variety of tags used for test
  816.                          purposes.
  817.                          
  818.  
  819. Default text
  820.  
  821.    Unless otherwise defined by tags, text is transmitted as a stream of lines.
  822.    The division of the stream of characters into lines is arbitrary, and only
  823.    made in order to allow the text to be passed through systems which can only
  824.    handle text with a limited line length. The recommended line length for
  825.    transmission is 80 characters. The division into lines has no significance
  826.    (except in the case of  example sections and PLAINTEXT ) apart from
  827.    indicating a word end. Line breaks between tags have no significance.
  828.    
  829.  
  830.                                    HTML TAGS
  831.                                        
  832.  
  833.    This is a list of tags used in the HTML language.  Each tag starts with a
  834.    tag opener (a less than sign) and ends with a tag closer (a greater than
  835.    sign).   Many tags have corresponding closing tags which identical except
  836.    for a slash after the tag opener. (For example, the TITLE tag).
  837.    
  838.  
  839.     Some tags take parameters, called attributes. The attributes are given
  840.    after the tag, separated by spaces. Certain attributes have an effect simply
  841.    by their presence, others are followed by an equals sign and a value. (See
  842.    the Anchor tag, for example). The names of tags and attributes are not case
  843.    sensitive: they may be in lower, upper, or mixed case with exactly the same
  844.    meaning.  (In this document they are generally represented in upper case.)
  845.    
  846.  
  847.     Currently HTML documents are transmitted without the normal SGML framing
  848.    tags, but if these are included parsers will ignore them.
  849.    
  850.  
  851. Title
  852.  
  853.    The title of a document is given between title tags:
  854.    
  855.  
  856.  
  857.         <TITLE> ... </TITLE>
  858.  
  859.    The text between the opening and the closing tags is a title for the
  860.    hypertext node. There should only be one title in any node. It should
  861.    identify the content of the node in a fairly wide context, and should
  862.    ideally fit on one line.
  863.    
  864.  
  865.     The title is not strictly part of the text of the document, but is an
  866.    attribute of the node. It may not contain anchors, paragraph marks, or
  867.    highlighting. the title may be used to identify the node in a history list,
  868.    to label the window displaying the node, etc. It is not normally displayed
  869.    in the text of a document itself. Contrast titles with headings .
  870.    
  871.  
  872. Next ID
  873.  
  874.    This tag takes a  single attribute which is the number of the next
  875.    document-wide numeric identifier to be allocated (not good SGML). Note that
  876.    when modifying a document,  old anchor ids should not be reused, as there
  877.    may be references stored elsewhere which point to them.  This is read and
  878.    generated by hypertext editors. Human writers of HTML usually use mnemonic
  879.    alpha identifiers.  Browser software may ignore this tag. Example of use:
  880.    
  881.  
  882.  
  883.         <NEXTID 27>
  884.  
  885. Base Address
  886.  
  887.    Anchors specify addresses of other documents, in a from relative to the
  888.    address of the current document. Normally, the address of a document is
  889.    known to the browser because it was used to access the document. However, is
  890.    a document is mailed, or is somehow visible with more than one address (for
  891.    example, via its filename and also via its library name server catalogue
  892.    number), then the browser needs to know the base address in order to
  893.    correctly deduce external document addresses.
  894.    
  895.  
  896.     The format of this tag is not yet specified.
  897.    
  898.  
  899. Anchors
  900.  
  901.    The format of an anchor is as follows:
  902.    
  903.  
  904.  
  905.         <A NAME=xxx HREF=XXX> ... </A>
  906.  
  907.    The text between the opening tag and the closing tag is either the start or
  908.    destination (or both) of a link. Attributes of the anchor tag are as
  909.    follows.
  910.    
  911.  
  912.   HREF                    If the HREF attribute is present, the anchor is
  913.                          senstive text: the start of a link. If the reader
  914.                          selects this text,  he should be presented with
  915.                          another document whose network address is defined by
  916.                          the value of the HREF attribute . The format of the
  917.                          network address is specified elsewhere . This allows
  918.                          for the form HREF=#identifier to refer to another
  919.                          anchor in the same document. If the anchor is in
  920.                          another document, the atribute is a relative name ,
  921.                          relative to the documents address (or specified base
  922.                          address if any).
  923.                          
  924.  
  925.   NAME                    The attribute NAME allows the anchor to be the
  926.                          destination of a link. The value of the parameter is
  927.                          that part of a hypertext address which follows the
  928.                          hash sign.
  929.                          
  930.  
  931.   TYPE                    An attribute TYPE may give the relationship described
  932.                          by the hyertext link. The type is expressed by a
  933.                          string for extensibility.  Strings for types with
  934.                          particular semantics will be registered by the W3
  935.                          team. The default relationship if none other is given
  936.                          is void.
  937.                          
  938.  
  939.    All attributes are optional, although one of NAME and HREF is necessary for
  940.    the anchor to be useful.
  941.    
  942.  
  943. IsIndex
  944.  
  945.    This tag informs the reader that the document is an index document. As well
  946.    as reading it, the reader may use a keyword search.
  947.    
  948.  
  949.     Format:
  950.    
  951.  
  952.  
  953.         <ISINDEX>
  954.  
  955.    The node may be queried with a keyword search by suffixing the node address
  956.    with a question mark, followed by a list of keywords separated by plus
  957.    signs. See the network address format.
  958.    
  959.  
  960. Plaintext
  961.  
  962.    This tag indicates that all following text is to be taken litterally, up to
  963.    the end of the file.  Plain text is designed to be represented in the same
  964.    way as example XMP text, with fixed width character and significant line
  965.    breaks. Format:
  966.    
  967.  
  968.  
  969.                 <PLAINTEXT>
  970.  
  971.    This tag allows the rest of a file to be read efficiently without parsing.
  972.    Its presence is an optimisation. There is no closing tag.
  973.    
  974.  
  975. Example sections
  976.  
  977.    These styles allow text of fixed-width characters to be embedded absolutely
  978.    as is into the document. The format is:
  979.    
  980.  
  981.  
  982.         <LISTING>
  983.  
  984.                 ...
  985.  
  986.         </LISTING>
  987.  
  988.    The text between these tags is to be portrayed in a fixed width font, so
  989.    that any formatting done by character spacing on successive lines will be
  990.    maintained. Between the opening and closing tags:
  991.    
  992.  
  993.        The text may contain any ISO Latin printable characters, including the
  994.           tag opener, so long as it does not contain the closing tag in full.
  995.           
  996.  
  997.        Line boundaries are significant, and are to be interpreted as a move to
  998.           the start of a new line.
  999.           
  1000.  
  1001.        The ASCII Horizontal Tab (HT) character should be interpreted as the
  1002.           smallest positive nonzero number of spaces which will leave the
  1003.           number of characters so far on the line as a multiple of 8. Its use
  1004.           is not recommended however.
  1005.           
  1006.  
  1007.    The LISTING tag is portrayed so that at least 132 characters will fit on a
  1008.    line.  The XMP tag is portrayed in a font so that at least 80 characters
  1009.    will fit on a line but is otherwise identical to LISTING. The examples of
  1010.    markup are here given using the XMP tag.
  1011.    
  1012.  
  1013. Paragraph
  1014.  
  1015.    This tag indicates a new paragraph. The exact representation of this
  1016.    (indentation,  leading, etc) is not defined here, and may be a function of
  1017.    other tags, style sheets etc. The format is simply
  1018.    
  1019.  
  1020.  
  1021.         <P>
  1022.  
  1023.    (In SGML terms, paragraph elements are transmitted in minimised form).
  1024.    
  1025.  
  1026. Headings
  1027.  
  1028.    Several levels (at least six) of heading are supported. Note that a
  1029.    hypertext document tends to need less levels of  heading than a normal
  1030.    document whose only structure is given by the nesting of headings. H1 is the
  1031.    highest level of heading, and is recommened for the start of a hypertext
  1032.    node.   It is suggested that the first heading be one suitable for a reader
  1033.    who is already browsing in related information, in contrast to the title tag
  1034.    which should identify the node in a wider context.
  1035.    
  1036.  
  1037.  
  1038.         <H1>, <H2>, <H3>, <H4>, <H5>, <H6>
  1039.  
  1040.    These tags are kept as defined in the CERN SGML guide. Their definition is
  1041.    completely historical, deriving from the AAP tag set.  A difference is that
  1042.    HTML documents allow headings to be terminated by  closing tags:
  1043.    
  1044.  
  1045.  
  1046.         <H2>Second level heading</h2>
  1047.  
  1048. Highlighting
  1049.  
  1050.    The highlighted phrase tags may occur in normal text, and may be nested. For
  1051.    each opening tag there must follow a corresponding closing tag. NOT
  1052.    CURRENTLY USED.
  1053.    
  1054.  
  1055.  
  1056.  
  1057.         <HP1>...</HP1>   <HP2>... </HP2> etc.
  1058.  
  1059. Glossaries
  1060.  
  1061.  
  1062.    A glosary (or definition list) is a list of paragraphs each of which has a
  1063.    short title alongside it.  Apart from glossaries, this format is useful for
  1064.    presenting a set of named elements to the reader. The format is as follows:
  1065.    
  1066.  
  1067.  
  1068.  
  1069.         <DL>
  1070.  
  1071.         <DT>Term<DD>definition pagagraph
  1072.  
  1073.         <DT>Term2<DD>Definition of term2
  1074.  
  1075.         </DL>
  1076.  
  1077. Lists
  1078.  
  1079.  
  1080.    A list is a sequence of paragraphs, each of which is preceded by a special
  1081.    mark or sequence number. The format is:
  1082.    
  1083.  
  1084.  
  1085.  
  1086.         <UL>
  1087.  
  1088.         <LI> list element
  1089.  
  1090.         <LI> another list element ...
  1091.  
  1092.         </LI>
  1093.  
  1094.    The opening list tag (UL for an unordered list, OL for an ordered one) must
  1095.    be immediately followed by the first list element. The representation of the
  1096.    list is not defined here, but a bulleted list for unordered lists,  and a
  1097.    sequence of numbered paraghraphs for an ordered list would be quite
  1098.    appropriate.
  1099.    
  1100.  
  1101.     "OL" IS NOT CURRENTLY USED
  1102. 
  1103.  
  1104.  
  1105.